package model

import (
	"ginblog/utils/errmsg"
	"gorm.io/gorm"
)

type Category struct {
	gorm.Model
	Name string `gorm:"type:varchar(20);not null" json:"name"`
}

//查询列表是否存在
func CheckCate(name string) (code int) {
	var cate Category
	db.Select("id").Where("name = ?",name).First(&cate)
	if cate.ID>0{
		//有记录
		return errmsg.ERROR_USERNAME_USED
	}
	return errmsg.SUCCSE
}

//查询单个目录
func GetOneCate(id int) (Category,int) {
	var cate Category
	err = db.Where("id=?",id).Find(&cate).Error
	if err != nil && err!=gorm.ErrRecordNotFound{
		return cate,errmsg.ERROR
	}
	return cate,errmsg.SUCCSE
}

//新增用户
func CreateCate(data *Category) int {
	err := db.Create(&data).Error
	if err != nil {
		return errmsg.ERROR //500
	}
	return errmsg.SUCCSE
}

//查询用户列表
func GetCateList(pageSize int,pageNum int) ([]Category,int64) {
	var cates []Category
	var offset int
	var total int64
	if pageNum==-1 {
		offset = -1
	}else{
		offset = (pageNum-1)*pageSize
	}
	err = db.Offset(offset).Limit(pageSize).Find(&cates).Count(&total).Error
	if err != nil && err!=gorm.ErrRecordNotFound {
		return nil,0
	}
	return cates,total
}

//编辑用户，不能在这里修改，不允许修改，因为涉及到安全
func UpdateCate(id int,data *Category) int {
	var cate Category
	var maps = make(map[string]interface{})
	maps["name"] = data.Name
	err = db.Model(&cate).Where("id=?",id).Updates(maps).Error
	if err != nil {
		return errmsg.ERROR_USERNAME_USED
	}
	return errmsg.SUCCSE
}

//删除
func DeleteCate(id int) int {
	var cate Category
	err = db.Where("id=?",id).Delete(&cate).Error
	if err != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCSE
}